#ifndef AGT_STATE_H
#define AGT_STATE_H

namespace agtk {

/** Interface class for accessing user specified states.
	@author Tom Savage (DocSavage)
**/
class State
{
public:
	State(unsigned long ulId = 0);
	~State(void);

	virtual void Load();
	virtual void Close();

	virtual void HandleInput(SDL_Event &event);
	virtual void Update(long lElapsedTicks);
	virtual void Render();

	unsigned long GetID();

private:
	unsigned long m_ulId; // Application defined ID (must be unique for state switching).
};

}

#endif